﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTableWidgetItem>

#include "codescan/codescanthread.h"
#include "keyboard/keyboardlistenthread.h"

#include "utils.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = NULL);
    ~MainWindow();

private:
    CodeScanThread* scanThread;      // 监听扫描器的子线程
    KeyboardListenThread* kbdListenThread;  //监听键盘的子线程

    void initTableWidget();         // 初始化账单表格
    void initInstructionWidget();   // 初始化快捷键列表
    void clearSalesInfo();          // 清空账单信息
    void deleteGoods(int);          // 删除账单中的指定行的商品
    void addGoods(Commodity);       // 添加商品
    bool isBillEmpty();             // 检查账单中是否还有商品，用于在页面跳转时进行约束

private slots:
    void tableWidgetItemSelected(QTableWidgetItem*);    // 某个商品被选中时，显示其信息

    void enterPressedSlot();
    void asteriskPressedSlot();
    void escPressedSlot();
    void deletePressedSlot();
    void plusPressedSlot();

    void changeToSalesSlot();
    void changeToAddSlot();
    void changeToUpdateSlot();

    void on_ensureButton_add_clicked();

    void on_cancelButton_add_clicked();

    void on_cancelButton_update_clicked();

    void on_ensureButton_update_clicked();

    void on_deleteButton_update_clicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
